package com.zmn.plat.services.impl.service.itempart;

import com.zmn.common.utils.date.DateUtil;
import com.zmn.plat.common.dto.service.itempart.ItemPartDRO;
import com.zmn.plat.model.entity.service.itempart.ItemPart;
import com.zmn.plat.model.entity.service.itempart.ItemPartQuery;
import com.zmn.plat.persistence.interfaces.service.itempart.ItemPartDao;
import com.zmn.plat.services.interfaces.service.itempart.ItemPartService;
import org.springframework.util.CollectionUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import com.zmn.common.constant.GlobalConsts;

/**
 * 描述: 项目-关联配件接口实现类
 *
 * @author guoqiao
 * @since  2021/11/19 19:07
 */
@Slf4j
@Service
public class ItemPartServiceImpl implements ItemPartService {

    private static final String TAG = "项目-关联配件基础服务接口";

    @Resource
    private ItemPartDao itemPartDao;

    @Override
    public ItemPart findById(Integer relateId) {
        if (Objects.isNull(relateId)) {
            log.error("[{}],根据id查询数据relateId为null", TAG);
            return null;
        }
        return itemPartDao.findById(relateId);
    }

    @Override
    public List<ItemPart> listByIds(List<Integer> relateIds) {
        if (CollectionUtils.isEmpty(relateIds)) {
            log.error("[{}],按条件查询数据,relateIds为null", TAG);
            return null;
        }
        return itemPartDao.listByIds(relateIds);
    }
    @Override
    public List<ItemPart> listByItemIds(List<Integer> itemIds) {
        if (CollectionUtils.isEmpty(itemIds)) {
            log.error("[{}],按条件查询数据,itemIds为null", TAG);
            return null;
        }
        return itemPartDao.listByItemIds(itemIds);
    }

    @Override
    public List<ItemPart> listByQuery(ItemPartQuery query) {
        if (Objects.isNull(query)) {
            log.error("[{}],按条件查询数据,query为null", TAG);
            return null;
        }
        return itemPartDao.listByQuery(query);
    }

    @Override
    public List<ItemPart> listPageByQuery(ItemPartQuery query) {
        if (Objects.isNull(query)) {
            log.error("[{}],按条件查询数据,query为null", TAG);
            return null;
        }
        query.setTotalCount(itemPartDao.countByQuery(query));
        return itemPartDao.listPageByQuery(query);
    }

    @Override
    public Integer countByQuery(ItemPartQuery query) {
        if (Objects.isNull(query)) {
            log.error("[{}],按条件统计数据,query为null", TAG);
            return null;
        }
        return itemPartDao.countByQuery(query);
    }

    @Override
    public Integer updateByKey(ItemPart itemPart) {
        if (Objects.isNull(itemPart.getRelateId())){
            log.error("[{}],根据id修改数据,itemPart为null", TAG);
            return null;
        }
        return itemPartDao.updateByKey(itemPart);
    }

    @Override
    public void updateStatusBatch(List<Integer> ids, Integer status, String operator) {
        if (!Objects.equals(status, GlobalConsts.NO) && !Objects.equals(status, GlobalConsts.YES)) {
            log.error("[{}],status状态超出取值范围", TAG);
            return;
        }
        itemPartDao.updateStatusBatch(ids, status, operator, DateUtil.getNow());
    }

    @Override
    public Integer insert(ItemPart itemPart){
        if (Objects.isNull(itemPart)){
            log.error("[{}],新增数据,itemPart为null", TAG);
            return null;
        }
        return itemPartDao.insert(itemPart);
    }

    @Override
    public void insertBatch(List<ItemPart> list){
        if (CollectionUtils.isEmpty(list)) {
            log.error("[{}],数据为空", TAG);
            return;
        }
        itemPartDao.insertBatch(list);
    }

    @Override
    public Integer deleteByKey(Integer relateId) {
        if (Objects.isNull(relateId)){
            log.error("[{}],根据id删除数据,relateId为null", TAG);
            return null;
        }
        return itemPartDao.deleteByKey(relateId);
    }
    @Override
    public Integer deleteByItemId(Integer itemId) {
        if (Objects.isNull(itemId)){
            log.error("[{}],根据故障项目id删除数据,itemId为null", TAG);
            return null;
        }
        return itemPartDao.deleteByItemId(itemId);
    }

}